/**
 * Desarrollado por: Judelvis Antonio Rivas Perdomo
 * Modificado por: Carlos Enrique Pena
 * Fecha Creacion: 29 de Marzo de 2012
 * Fecha Modificacion: 15 de Abril de 2012
 */

var construye = {
	"Cabezera" : {
		"1" : {
			"titulo" : "cedula",
			"tipo" : "texto",
			"atributos" : "width:80;",
			"filtrar" : '1',
		},
		"2" : {
			"titulo" : "col2",
			"tipo" : "fecha",
			"atributos" : "width:220px;",
			"propiedades" : ""
		},
		"3" : {
			"titulo" : "col3",
			"tipo" : "combo",
			"atributos" : "width:90;",
			"propiedades" : ""
		},
		"4" : {
			"titulo" : "col4",
			"tipo" : "textArea",
			"atributos" : "width:110 ",
			"propiedades" : ""
		},
		"5" : {
			"titulo" : "foto",
			"tipo" : "checkbox",
			"atributos" : "width:110 ",
			"propiedades" : ""
		},
		"6" : {
			"titulo" : "A",
			"titulo1" : "R",
			"tipo" : "radio",
			"atributos" : "width:10 ",
			"propiedades" : ""
		},
		"7" : {
			"titulo" : "FECHA",
			"tipo" : "calendario",
			"atributos" : "width:100px ",
			"propiedades" : ""
		},
		"8" : {
			"titulo" : "accion",
			"tipo" : "boton",
			"atributos" : "width:10 " ,
		},
		"9" : {
			"titulo" : "accion2",
			"tipo" : "boton",
			"atributos" : "width:10 ",
			"parametro" : "2,5,6,1"
		},
	},
	"Cuerpo" : {
		"1" : {
			"1" : "17456121",
			"2" : "12-06-2010",
			"3" : "jejeje",
			"4" : "algo",
			"5" : "check1",
			"6" : "0",
			"7" : "12-04-2010",
			"8" : "del",
			"9" : "ver"
		}
	},
	"Objetos" : {
		"3" : [{
			"valor" : "v1",
			"etiqueta" : "valor1"
		}, {
			"valor" : "v2",
			"etiqueta" : "valor2"
		}, {
			"valor" : "v3",
			"etiqueta" : "valor3"
		}, {
			"valor" : "v4",
			"etiqueta" : "valor4"
		}],
		"5" : [{
			"valor" : "si",
			"etiqueta" : "si"
		}],
	},
	//"Enumerar" : 0,
	"Css" : "",
	"Paginador" : "10"
};

/**
 * Clase Grid
 *
 * TODO Componente Rejilla
 * Depende: TPaginador
 *
 * oElem : Grid (Privado)
 * oTabla: Tabla (html)
 * oPag : Paginador
 * return TGrid
 */

TGrid = function(oEsq, oTabla, oPag) {
	this.Esq = construye;
	//oEsq; //Objeto Grid
	this.Tabla = oTabla;
	// Tabla Html
	this.Pag = oPag;
	//Paginador
	this.Enu = '';
	//Elemento para enumerar Filas

	//En caso de enviar paginador por partes
	this.SetPaginador = function(Pag) {
		this.Pagainador = Pag;
	}
	this.GetPaginador = function() {
		alert(this.Pagainador);
	}

	this.Cargar = function() {
		this._Enumerar();
		return false;
	}

	this._Enumerar = function() {
		var Num_Col = new Array();
		Num_Col[1] = '';
		Num_Col[2] = '';
		Num_Col[3] = '';
		if( typeof this.Esq.Enumerar === "number") {
			Num_Col[1] = '<TH>';
			Num_Col[2] = '</TH>';
			Num_Col[3] = '<TH STYLE="width:20;"></TH>';
		}
		this.Enu = Num_Col;
	}
	//Construye la Cabezera de la Tabla <THEAD> Mediante Columnas
	this.GetCabezera = function() {
		Vt = "#" + this.Tabla;
		//Vista de la Tabla
		var sTit = '<THEAD><TR>';
		sTit += this.Enu[3];
		$.each(this.Esq.Cabezera, function(sCol, sArr) {
			sTit += '<TH ID="T' + sCol + '" STYLE="';
			if(sArr.atributos != null) {
				sTit += sArr.atributos;
			}
			sTit += '">' + sArr.titulo + '</TH>';
		});
		sTit += '</TR></THEAD>';
		$(Vt).html(sTit);
	}
	//Construye el Cuerpo de la Tabla <TBODY> Mediante Columnas
	this.GetCuerpo = function() {
		Vt = "#" + this.Tabla;
		//Vista de la Tabla
		var Esquema = this.Esq;
		var identificador_celdas = '';
		var iFilas = 0;
		var oTr = document.createElement("tr");
		var oInput = document.createElement("input");
		var sLineas = "";
		var sInput = "<INPUT TYPE=";

		$.each(Esquema.Cuerpo, function(sFila, sColumnas) {
			iFilas++;
			sLineas = '<TR ID="' + sFila + '"><TH>' + iFilas + '</TH>';
			oTr.id = sFila;
			var oTh = document.createElement("th");
			oTr.appendChild(oTh);
			$.each(sColumnas, function(sCol, sValor) {
				cadena_tipo = Esquema.Cabezera[sCol].tipo;
				identificador_celdas = sFila + '_' + sCol;
				sLineas += '<TD ID="' + identificador_celdas + '" OnDblClick="Crea_Objeto(this,\'' + cadena_tipo + '\');">';
				switch(cadena_tipo) {
					case 'boton':
						/**
						 sLineas += sInput + 'BUTTON ID="' + identificador_celdas + '_0" VALUE="' + sValor + '"';
						 sLineas += 'STYLE="width:100%" onClick="ejecutar(\'' + sValor + '\',\'' + sFila + '\');">';
						 sLineas += '<DIV ID ="div_texto_boton" STYLE="display:none">' + sValor + '</DIV></TD>';
						 **/
						oInput.type = 'button';
						oInput.id = identificador_celdas + '_0';
						oInput.value = sValor;
						oInput.onclick = function() {
							A = new TGrid();
							A._Ejecutar('', sFila);
						};
						sLineas += '</TD>';

						break;
					case 'checkbox':
						var cantidad_check = Esquema.Objetos[sCol];
						if(cantidad_check.length == 1) {
							sLineas += sInput + 'CHECKBOX ID="' + identificador_celdas + '_0" VALUE="' + Esquema.Objetos[sCol][0].valor + '" ';
							sLineas += 'OnClick="revisa_casilla(\'' + Esquema.Objetos[sCol][0].etiqueta + '\',\'' + identificador_celdas + '\');">';
							sLineas += '<DIV ID="div_' + identificador_celdas + '" STYLE="display:none"></DIV></TD>';
						} else {
							sLineas += sValor + '</TD>';
						}
						break;
					default:
						sLineas += sValor + '</TD>';
						break;
				}
			});
			sLineas += '</TR>';
			$(Vt).append(sLineas);
			var Col = document.getElementById(identificador_celdas);
			Col.appendChild(oInput);

		});
	}
	/**
	 * Ejecutar Acciones de Botonos
	 * acc : Accion | val : Parametro
	 */
	this._Ejecutar = function(acc, val) {
		var arreglo_valores = new Array();
		$("#" + val).each(function(index) {

			$(this).children("td").each(function(index2) {
				arreglo_valores.push($(this).text());
			});
		});

		for(var j = 0; j < arreglo_valores.length; j++) {
			alert(arreglo_valores[j]);
		}
	}
}
var iCol = 0;
var iFil = 0;
var oEsquema = "";
var fecha_activa = "";
var p = null;

//////////////////////REESTRUCTURA DE LA CREACION DE LA TABLA
function _Construye(oElemento, oTabla, oPaginador) {
	oEsquema = oTabla;
	//oEsquema = construye;
	var la_tabla = document.getElementById(oElemento);
	var columnas_ocultas = new Array();
	//ARREGLO PARA GUARDAR QUE COLUMNAS DE LA TABLA SE VAN A OCULTAR
	/******************INICA CABEZERA*****************/
	if(oEsquema.Css != null) {
		//la_tabla.className=oEsquema.Css;
	}
	la_tabla.style.emptyCells = "inherit";
	var la_cabezera = la_tabla.createTHead();
	var la_fila_cab = la_cabezera.insertRow(0);
	var th_enumera = document.createElement('th');
	//VERIFICA SI SE VA A ESCRIBIR LA NUMERACION
	if(oEsquema.Enumerar != null) {
		th_enumera.id = 'T_enumera';
		la_fila_cab.appendChild(th_enumera);
	}
	var arreglo_elementos = new Array();
	//ARREGLO PARA GUARDAR QUE ELEMENTOS SE VAN A MOSTRAR EN EL CUERPO DE LA TABLA
	var th_aux = document.createElement('th');
	var numero_col = 0;
	//VARIABLE DE CONTROL PARA USAR LA FUNCIONES MUESTRA_FILTRO Y OCULTA_COLUMNA
	$.each(oEsquema.Cabezera, function(sId_Columnas, sArreglo) {
		var th = document.createElement('th');
		th.id = 'T' + sId_Columnas;
		th.style.cssText = sArreglo.atributos;
		la_fila_cab.appendChild(th);
		th.innerHTML = sArreglo.titulo;
		if(sArreglo.buscar != null) {//VERIFICA SI EN LA COLUMNA LLEVA FILTRO DE BUSQUEDA
			var filtro = document.createElement('input');
			var pos = numero_col + 1 - 1;
			filtro.type = "text";
			filtro.id = "F" + sId_Columnas;
			filtro.style.display = 'none';
			th.onclick = function() {
				Muestra_Filtro(filtro);
				$('#' + filtro.id).focus();
			}
			filtro.onkeyup = function() {
				filtra(this.value, la_tabla, pos);
			};
			filtro.onblur = function() {
				Oculta_Filtro(filtro);
			}
			th.appendChild(filtro);
		}
		if(sArreglo.oculto != null) {//AGREGA LAS COLUMNAS A OCULTAR
			var pos = numero_col + 1 - 1;
			columnas_ocultas.push(pos);
			th.style.display = "none";
		}
		numero_col++;
		//CREA EL MAPA DE OBJETOS PARA LAS CELDAS
		arreglo_elementos[sId_Columnas] = '';
		var cadena_tipo = sArreglo.tipo;
		if(cadena_tipo != null) {
			switch(cadena_tipo) {
				case 'boton':
					var objeto_celda = document.createElement('input');
					objeto_celda.type = "button";
					objeto_celda.style.width = "100%";
					arreglo_elementos[sId_Columnas] = objeto_celda;
					break;
				case 'bimagen':
					var objeto_celda = document.createElement('input');
					objeto_celda.type = "image";
					objeto_celda.style.width = "100%";
					arreglo_elementos[sId_Columnas] = objeto_celda;
					break;
				case 'checkbox':
					var cantidad_check = oEsquema.Objetos[sId_Columnas];
					if(cantidad_check.length == 1) {
						var objeto_celda = document.createElement('input');
						objeto_celda.type = "checkbox";
						objeto_celda.value = oEsquema.Objetos[sId_Columnas][0].valor;
						arreglo_elementos[sId_Columnas] = objeto_celda;
					}
					break;
				case 'radio':
					var th2 = document.createElement('th');
					th2.id = 'T' + sId_Columnas + '_';
					th2.innerHTML = sArreglo.titulo1;
					th2.style.cssText = sArreglo.atributos;
					la_fila_cab.appendChild(th2);
					var objeto_celda = document.createElement('input');
					objeto_celda.type = "radio";
					objeto_celda.value = 1;
					arreglo_elementos[sId_Columnas] = objeto_celda;
					break;
				default:
					arreglo_elementos[sId_Columnas] = cadena_tipo;
					break;
			}
		}
		//FIN DEL MAPA DE OBJETOS PARA LAS CELDAS
	});
	/******************FIN DE LA CABEZERA*****************/
	/******************INICIO DEL CUERPO *****************/
	var iFilas = 0;
	var cuerpo_tabla = document.createElement('tBody');
	la_tabla.appendChild(cuerpo_tabla);
	var identificador = "";
	$.each(oEsquema.Cuerpo, function(sFila, sColumnas) {
		var fila = cuerpo_tabla.insertRow(cuerpo_tabla.rows.length);
		fila.id = sFila;
		iFilas++;
		if(oEsquema.Enumerar != null) {//PINTA LOS NUMEROS DE COLUMNAS, ESTA ASOCIADO A COMO VIENEN LOS IDENTIFICADORES EN EL OBJETO. DEBEN COMENSAR EN 1
			th_nuevo = th_aux.cloneNode(true);
			th_nuevo.innerHTML = sFila;
			fila.appendChild(th_nuevo);
		}
		$.each(sColumnas, function(sCol, sValor) {
			identificador = sFila + '_' + sCol;
			var columna_fila = fila.insertCell(fila.cells.length);
			columna_fila.id = identificador;
			if(arreglo_elementos[sCol] != "") {
				if( typeof arreglo_elementos[sCol] != "string") {
					var nuevo = arreglo_elementos[sCol].cloneNode(true);
					nuevo.id = identificador + '_0';
					switch(nuevo.type) {
						case 'button':
							nuevo.value = sValor;
							nuevo.onclick = function() {
								Ejecutar(oEsquema.Cabezera[sCol].funcion, sFila, oEsquema.Cabezera[sCol].parametro);
							}
							var div_texto = document.createElement('div');
							div_texto.id = "div_texto_boton";
							div_texto.style.cssText = "display:none";
							div_texto.innerHTML = sValor;
							nuevo.appendChild(div_texto);
							columna_fila.appendChild(nuevo);
							break;
						case 'image':
							nuevo.src = sValor;
							nuevo.onclick = function() {
								Ejecutar(oEsquema.Cabezera[sCol].funcion, sFila, oEsquema.Cabezera[sCol].parametro);
							}
							var div_texto = document.createElement('div');
							div_texto.id = "div_texto_img";
							div_texto.style.cssText = "display:none";
							div_texto.innerHTML = sValor;
							nuevo.appendChild(div_texto);
							columna_fila.appendChild(nuevo);
							break;
						case 'checkbox':
							var cantidad_check = oEsquema.Objetos[sCol];
							if(cantidad_check.length == 1) {
								nuevo.value = oEsquema.Objetos[sCol][0].valor;
								nuevo.onclick = function() {
									Revisa_Casilla(oEsquema.Objetos[sCol][0].etiqueta, sFila + '_' + sCol);
								}
								nuevo.innerHTML = '<DIV ID ="div_' + identificador + '" STYLE="display:none"></DIV></TD>';
								columna_fila.appendChild(nuevo);
							}
							break;
						case 'radio':
							nuevo.name = 'radio_' + identificador;
							var radio = document.createElement('input');
							radio.type = 'radio';
							radio.id = identificador + '_1';
							radio.name = 'radio_' + identificador;
							radio.value = 0;
							columna_fila.appendChild(nuevo);
							var columna_fila2 = fila.insertCell(fila.cells.length);
							columna_fila.id = 'R' + identificador;
							columna_fila2.id = 'R' + identificador + '_';
							columna_fila2.appendChild(radio);
							if(sValor == '1') {
								nuevo.checked = true;

							} else {
								radio.checked = true;

							}
							break;
					}
				} else {
					columna_fila.ondblclick = function() {
						Crea_Objeto(this, arreglo_elementos[sCol]);
					}
					columna_fila.innerHTML = sValor;
				}
			} else {
				columna_fila.innerHTML = sValor;
			}
		});
	});
	/******************FIN DEL CUERPO     *****************/
	/******************OCULTA COLUMNAS    *****************/
	for(var k = 0; k < columnas_ocultas.length; k++) {
		Oculta_Columna(columnas_ocultas[k], la_tabla.id);

	}
	/******************FIN OCULTA COLUMNAS*****************/
	/******************PAGINADOR          *****************/
	if(oEsquema.Paginador != null && oEsquema.Paginador != 0) {
		$("#" + oPaginador).html('');
		p = new Paginador(document.getElementById(oPaginador), document.getElementById(oElemento), oEsquema.Paginador);
		p.Mostrar();
	}
}

/**
 * Pie del Grid
 * @return string
 */
function _getPie() {
	var sPie = '<TFOOT></TFOOD>';
	return sPie;
}

function Crea_Objeto(elemento, tipo) {
	var identifica = elemento.id;
	var celda = document.getElementById(identifica);
	var trae_valor = $('#' + identifica).text();
	var id_separados = identifica.split('_');
	var div_oculto = document.createElement('div');
	div_oculto.style.display = "none";
	div_oculto.innerHTML = trae_valor;
	elemento.innerHTML = "<div style='display:none;'>" + trae_valor + "</div>";
	switch(tipo) {
		case 'textArea':
			var area = document.createElement('textarea');
			area.id = identifica + '_0';
			area.innerHTML = trae_valor;
			area.onblur = function() {
				Restaura_Objeto(this, identifica);
			}
			elemento.appendChild(area);
			break;
		case 'combo':
			var combo = document.createElement('select');
			combo.id = identifica + "_0";
			combo.style.width = "100%";
			combo.onblur = function() {
				Restaura_Objeto(this, identifica);
			}
			var contador = 0;
			$.each(oEsquema.Objetos[id_separados[1]], function(id, contenido) {
				combo.options[contador] = new Option(contenido.etiqueta, contenido.valor);
				sFil += "<OPTION value='" + contenido.valor + "' ";
				if(contenido.valor == trae_valor) {
					combo[contador].selected = 'true';
				}
				contador++;
			});
			elemento.appendChild(combo);
			break;
		case 'fecha':
			var trae_fecha = trae_valor.split("-");
			var dia = 0;
			var ano = 0;
			var formato = 0;
			if(eval(trae_fecha[0]) > 2000) {
				dia = trae_fecha[2];
				ano = trae_fecha[0];
				formato = 1;
			} else {
				dia = trae_fecha[0];
				ano = trae_fecha[2];
			}
			//COMBO PARA EL DIA
			var div_fecha = document.createElement('div');
			div_fecha.id = "div_" + identifica;
			div_fecha.style.cssText = "padding: 0 0 0 0; background-color:#000fff; width:100%; height:100%; float:right;";
			var selec_dia = document.createElement('select');
			selec_dia.id = identifica + "_0";
			selec_dia.style.width = '40px';
			var contador = 1;
			for( contador = 1; contador < 32; contador++) {
				selec_dia.options[contador - 1] = new Option(contador, contador);
				if(eval(dia) == contador) {
					selec_dia[contador - 1].selected = 'true';
				}
			}
			div_fecha.appendChild(selec_dia);
			//COMBO PARA EL MES
			var selec_mes = document.createElement('select');
			selec_mes.id = identifica + "_1";
			selec_mes.style.width = '40px';
			for( contador = 1; contador < 13; contador++) {
				selec_mes.options[contador - 1] = new Option(contador, contador);
				if(eval(trae_fecha[1]) == contador) {
					selec_mes[contador - 1].selected = 'true';
				}
			}
			div_fecha.appendChild(selec_mes);
			//COMBO PARA EL AÑO
			var selec_ano = document.createElement('select');
			selec_ano.id = identifica + "_2";
			selec_ano.style.width = '60px';
			var contador = 1;
			for( contador = 1; contador < 12; contador++) {
				selec_ano.options[contador - 1] = new Option(contador + 2004, contador + 2004);
				if(eval(ano) == contador + 2004) {
					selec_ano[contador - 1].selected = 'true';
				}
			}
			div_fecha.appendChild(selec_ano);
			//BOTON DE ACEPTAR NUEVA FECHA
			var btn_a = document.createElement('input');
			btn_a.type = "button";
			btn_a.value = 'A';
			btn_a.onclick = function() {
				Restaura_Fecha(this, identifica, formato);
			}
			div_fecha.appendChild(btn_a);
			elemento.appendChild(div_fecha);

			break;
		case 'texto':
			var input_text = document.createElement('input');
			input_text.type = "text";
			input_text.id = identifica + "_0";
			input_text.value = trae_valor;
			input_text.style.width = "100%";
			input_text.onblur = function() {
				Restaura_Objeto(this, identifica);
			}
			elemento.appendChild(input_text);
			break;
		case 'calendario':
			var trae_fecha = trae_valor.split("-");
			var dia = 0;
			var ano = 0;
			var formato = 'dd-mm-yy';
			if(eval(trae_fecha[0]) > 2000) {
				dia = trae_fecha[2];
				ano = trae_fecha[0];
				formato = 'yy-mm-dd';
			} else {
				dia = trae_fecha[0];
				ano = trae_fecha[2];
			}
			var calendario = document.createElement('input');
			calendario.type = 'text';
			calendario.val = trae_fecha;
			calendario.id = identifica + '_0';
			var btn_a = document.createElement('input');
			btn_a.type = "button";
			btn_a.value = 'A';
			btn_a.onclick = function() {
				Restaura_Objeto(calendario, identifica);
			}
			elemento.appendChild(calendario);
			elemento.appendChild(btn_a);
			$("#" + identifica + "_0").datepicker({
				changeMonth : true,
				changeYear : true,
				dateFormat : formato
			});
			//$( "#"+identifica+"_0" ).datepicker( "option", "dateFormat", formato );
			$("#" + identifica + "_0").datepicker({
				currentText : trae_valor
			});
			break;
		default:
			break;
	}
	$('#' + identifica + '_0').focus();
}

function Ejecutar(funcion, fila, parametro) {
	var arreglo_valores = "{";
	if(parametro == null) {//ENVIAR TODAS LAS COLUMNAS A LA FUNCION A EJECUTAR
		$("#" + fila).each(function(index) {
			var i = 0;
			var ubica_radio = 0;
			$(this).children("td").each(function(index2) {
				if(this.id.charAt(0) == 'R') {//PARA OBTENER EL VALOR EN CASO DE OPTION BUTTON
					if(ubica_radio == 0) {
						ubica_radio = 1;
						var rad = 'radio_' + this.id.substring(1);
						var cont = $("input[name='" + rad + "']:checked").val();
						arreglo_valores += "'" + i + "' : '" + cont + "' ,";
						i++;
					}
				} else {//OBTENER EL VALOR TEXT DE LA CELDA
					if(this.childNodes.length > 1) {
						var algo = this.childNodes.item(0);
						arreglo_valores += "'" + i + "' : '" + algo.innerHTML + "' ,";
						i++;
					} else {
						arreglo_valores += "'" + i + "' : '" + $(this).text() + "' ,";
						i++;
					}
				}

			});

		});

	} else {//ENVIAR UN ARREGLO DE VALORES ESPECIFICADOS EN EL OBJETO BOTON
		var valores = parametro.split(',');
		var ubica_radio = 0;
		for(var j = 0; j < valores.length; j++) {//VERIFICAR QUE COLUMNAS SE VAN A ENVIAR A LA FUNCION A EJECUTAR
			fila_r = document.getElementById(fila).getElementsByTagName('td');
			var pos = parseInt(valores[j]) - 1;
			var id = fila_r[pos].id;
			//alert(id + "/" + fila + "/" + valores[j]);
			if(id.charAt(0) == 'R') {
				if(ubica_radio == 0) {//PARA OBTENER EL VALOR EN CASO DE OPTION BUTTON
					ubica_radio = 1;
					var rad = 'radio_' + id.substring(1);
					var cont = $("input[name='" + rad + "']:checked").val();
					arreglo_valores += "'" + j + "' : '" + cont + "' ,";
					//reacomoda los valores del objeto parametro
					if(valores[j + 1] != null) {
						//alert(valores[j+1]);
						if(valores[j + 1] > valores[j]) {
							valores[j + 1]++;
						}
					}
				}
			} else {//OBTENER EL VALOR TEXT DE LA CELDA
				var hijos = document.getElementById(id).childNodes.length;
				//alert(hijos + "/" +  id);
				if(hijos > 1) {
					var texto = document.getElementById(id).childNodes.item(0).innerHTML;
					//alert(texto);
					arreglo_valores += "'" + j + "' : '" + texto + "' ,";
				} else {
					arreglo_valores += "'" + j + "' : '" + $("#" + id).text() + "' ,";
				}
			}
		}
	}
	arreglo_valores += "}";
	alert(arreglo_valores);
	var data_json = eval(arreglo_valores);
	var strUrl = url + "/index.php/cooperativa/" + ejecutar;
	// $.ajax({
	// url: strUrl,
	// dataType: "json",
	// type : "POST",
	// data: "arreglo=" + data_json,
	// success : function(html){
	// $("#"+valor.name).remove();
	// }
	// });*/
	return 0;
}

function Restaura_Objeto(elemento, id_td) {
	var id_objeto = elemento.id;
	var trae_valor = $('#' + id_objeto).val();
	$('#' + id_td).html(trae_valor);
}

function Restaura_Fecha(elemento, id_td, forma) {
	var id_objeto = elemento.id;
	var dia = $('#' + id_td + '_0').val();
	var mes = $('#' + id_td + '_1').val();
	var ano = $('#' + id_td + '_2').val();
	if(dia < 10)
		dia = '0' + dia;
	if(mes < 10)
		mes = '0' + mes;
	var regresa_valor = '';
	if(forma == 0)
		regresa_valor = dia + '-' + mes + '-' + ano;
	else
		regresa_valor = ano + '-' + mes + '-' + dia;
	$('#' + id_td).html(regresa_valor);
}

function Revisa_Casilla(texto, celda) {
	var check = '#' + celda + '_0';
	var div = '#div_' + celda;
	if($(check).is(':checked')) {
		$(div).html(texto);
	} else {
		$(div).html("");
	}
}

function Revisa_Radio(texto, celda) {
	var lbl = '#lbl_' + celda;
	$(lbl).html(texto);
}

function Muestra_Filtro(filtro) {
	$("#" + filtro.id).show();
}

function Oculta_Filtro(filtro) {
	$("#" + filtro.id).hide();
}

function Oculta_Columna(col, tabla) {
	fila = document.getElementById(tabla).getElementsByTagName('tr');
	for( i = 1; i < fila.length; i++)
		fila[i].getElementsByTagName('td')[col].style.display = 'none';
}

function filtra(txt, t, pos) {
	filas = t.getElementsByTagName('tr');
	if(txt != '') {
		for( i = 1; ele = filas[i]; i++) {
			texto = ele.getElementsByTagName('td')[pos].innerHTML.toUpperCase();

			posi = (texto.indexOf(txt.toUpperCase()) == 0);
			ele.style.display = (posi) ? '' : 'none';
		}
	} else {
		p.SetPagina(p.pagActual);
	}
}

function Construye_Tabla(id_tabla,paginador,consulta,ruta) {
	$("#" + id_tabla).html('');
	$.ajax({
		url : ruta+'/index.php/cooperativa/Genera_Tabla',
		type : "POST",
		data : "consulta=" + consulta,
		dataType : "json",
		success : function(data) {
			oEsq = data;
			_Muestra(id_tabla, oEsq, paginador);
		}
	});
}

function Construye_Tabla_Ejecucion(id_tabla,paginador,consulta,ruta) {
	$("#" + id_tabla).html('');
	var query = $("#" + consulta).val();
	$.ajax({
		url : ruta+'/index.php/cooperativa/Genera_Tabla',
		type : "POST",
		data : "consulta=" + query,
		dataType : "json",
		success : function(data) {
			oEsq = data;
			_Muestra(id_tabla, oEsq, paginador);
		}
	});
}

function _Muestra(oElemento, oTabla2, oPaginador) {
	oEsquema2 = oTabla2;
	var la_tabla = document.getElementById(oElemento);
	var iFilas = 0;
	var cuerpo_tabla = document.createElement('tBody');
	la_tabla.appendChild(cuerpo_tabla);
	var identificador = "";

	la_tabla.style.emptyCells = "inherit";
	la_tabla.style.width = "100%";
	var la_cabezera = la_tabla.createTHead();
	var la_fila_cab = la_cabezera.insertRow(0);
	var th_enumera = document.createElement('th');
	la_fila_cab.appendChild(th_enumera);
	//cabezera
	$.each(oEsquema2.Cabezera, function(sId_Columnas, sArreglo) {
		var th = document.createElement('th');
		th.id = 'T' + sId_Columnas;
		la_fila_cab.appendChild(th);
		th.innerHTML = sArreglo;
	});

	$.each(oEsquema2.Cuerpo, function(sFila, sColumnas) {
		var fila = cuerpo_tabla.insertRow(cuerpo_tabla.rows.length);
		fila.id = parseInt(sFila)+1;
		iFilas++;
		var th_nuevo = document.createElement('th');
		th_nuevo.innerHTML = iFilas;
		fila.appendChild(th_nuevo);
		$.each(sColumnas, function(sCol, sValor) {
			identificador = iFilas + '_' + sCol;
			var columna_fila = fila.insertCell(fila.cells.length);
			columna_fila.id = identificador;
			columna_fila.innerHTML = sValor;
		});
	});
	$("#" + oPaginador).html('');
	p = new Paginador(document.getElementById(oPaginador), document.getElementById(oElemento), 10);
	p.Mostrar();
}

//////////////////////CLASE PAGINADOR///////////////////////////
Paginador = function(divPaginador, tabla, tamPagina) {
	this.miDiv = divPaginador;
	//un DIV donde irán controles de paginación
	this.tabla = tabla;
	//la tabla a paginar
	this.tamPagina = tamPagina;
	//el tamaño de la página (filas por página)
	this.pagActual = 1;
	//contador
	this.muestra = 0;
	//asumiendo que se parte en página 1
	this.paginas = Math.floor((this.tabla.rows.length - 2 ) / this.tamPagina) + 1;
	//¿?

	this.SetPagina = function(num) {
		num = parseInt(num);
		if(num < 0 || num > this.paginas) {
			return;
		}
		//marca pagina actual
		id_li = 'li_' + num;
		id_li2 = 'li_' + this.pagActual;
		var li_actual = document.getElementById(id_li);
		var li_ant = document.getElementById(id_li2);
		if(num != this.pagActual) {
			li_actual.className = "seleccionado";
			li_ant.className = "deseleccionado";

		} else {
			li_actual.className = "seleccionado";
		}
		this.pagActual = num;
		var min = 1 + (this.pagActual - 1) * this.tamPagina;
		var max = min + this.tamPagina - 1;
		for(var i = 1; i < this.tabla.rows.length; i++) {
			if(i < min || i > max)
				this.tabla.rows[i].style.display = 'none';
			else
				this.tabla.rows[i].style.display = '';
		}

		if(this.muestra == 1) {
			muestra_item(num);
		}

		//mostrar botones
		var total_lineas = this.tamPagina * this.paginas;
		if(num == 1) {
			//this.miDiv.firstChild.rows[0].cells[1].style.display = "none";
			this.miDiv.firstChild.rows[0].cells[1].style.visibility = "hidden";
			this.miDiv.firstChild.rows[0].cells[0].innerHTML = 'Mostrando ' + min + ' a ' + max + ' de ' + total_lineas + ' | Pagina ' + this.pagActual + ' De ' + this.paginas;
		} else {
			//this.miDiv.firstChild.rows[0].cells[1].style.display = "table-cell";
			this.miDiv.firstChild.rows[0].cells[1].style.visibility = "visible";
			this.miDiv.firstChild.rows[0].cells[0].innerHTML = 'Mostrando ' + min + ' a ' + max + ' de ' + total_lineas + ' | Pagina ' + this.pagActual + ' De ' + this.paginas;
		}

		if(num == this.paginas) {
			//this.miDiv.firstChild.rows[0].cells[3].style.display = "none";
			this.miDiv.firstChild.rows[0].cells[3].style.visibility = "hidden";
			this.miDiv.firstChild.rows[0].cells[0].innerHTML = 'Mostrando ' + min + ' a ' + max + ' de ' + total_lineas + ' | Pagina ' + this.pagActual + ' De ' + this.paginas;
		} else {
			//this.miDiv.firstChild.rows[0].cells[3].style.display = "table-cell";
			this.miDiv.firstChild.rows[0].cells[3].style.visibility = "visible";
			this.miDiv.firstChild.rows[0].cells[0].innerHTML = 'Mostrando ' + min + ' a ' + max + ' de ' + total_lineas + ' | Pagina ' + this.pagActual + ' De ' + this.paginas;
		}

		//MUESTRA PAGINAS
		var desde = 0;
		var hasta = 0;
	}

	this.Mostrar = function() {
		//alert(this.paginas + "--" +this.tabla.rows.length);
		if(this.paginas > 3) {
			this.muestra = 1;
		}
		var tblPaginador = document.createElement('table');
		//CREA TABLA DEL PAGINADOR
		var fil = tblPaginador.insertRow(tblPaginador.rows.length);
		//INSERTA PRIMERA FILA DE LA TABLA
		//MUESTRA PAGINA ACTUAL Y TOTALES DEL PAGINADOR
		var numero_pagina = fil.insertCell(fil.cells.length);
		numero_pagina.innerHTML = '';
		numero_pagina.className = 'celdas';
		//BOTON ANTERIOR DEL PAGINADOR

		//var ant = fil.insertCell(fil.cells.length);
		var ant = fil.insertCell(fil.cells.length);
		ant.innerHTML = 'Anterior';
		ant.className = 'boton';
		var self = this;
		ant.onclick = function() {
			if(self.pagActual == 1)
				return;
			self.SetPagina(self.pagActual - 1);
		}
		//LISTA DE PAGINAS DEL PAGINADOR
		var lista_paginas = fil.insertCell(fil.cells.length);
		lista_paginas.className = "celdas";
		var ul = document.createElement('ul');
		ul.id = "lista_paginas";
		//BOTON SIGUIENTE DEL PAGINADOR
		var sig = fil.insertCell(fil.cells.length);
		sig.innerHTML = 'Siguiente';
		sig.className = 'boton';
		sig.onclick = function() {
			if(self.pagActual == self.paginas)
				return;
			self.SetPagina(self.pagActual + 1);
		}
		//SE AGREGA LA TABLA DEL PAGINADOR AL DIV ESPECIFICO DEL PAGINADOR
		this.miDiv.appendChild(tblPaginador);
		this.miDiv.className = 'paginador';
		//ASIGNA LA CLASS PARA EL ESTILO DEL PAGINADOR

		//LLENA LA LISTA DE PAGINAS
		lista_paginas.appendChild(ul);
		var inicio = document.createElement("li");
		inicio.id = "li_inicio";
		inicio.innerHTML = "<<";
		inicio.onclick = function() {
			p.SetPagina(1);
		}
		if(this.muestra == 1) {
			ul.appendChild(inicio);
		}
		for(var i = 0; i < this.paginas; i++) {
			var ele = document.createElement('li');
			ele.innerHTML = i + 1;
			id_ele = i + 1;
			ele.id = "li_" + id_ele;
			Crear_Evento(ele, "click", function() {
				p.SetPagina(this.innerHTML);
			});
			ul.appendChild(ele);
		}
		var fin = document.createElement("li");
		fin.id = "li_fin";
		fin.innerHTML = ">>";
		fin.onclick = function() {
			p.SetPagina(self.paginas);
		}
		if(this.muestra == 1) {
			ul.appendChild(fin);
		}

		//ME LLEVA A LA PRIMERA PAGINA
		if(this.tabla.rows.length - 1 > this.paginas * this.tamPagina)
			this.paginas = this.paginas + 1;

		this.SetPagina(this.pagActual);
	}
	function muestra_item(actual) {
		var hasta = actual + 3;
		if(hasta <= p.paginas) {
			for(var i = 1; i < actual; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).hide();
			}
			for(var i = actual; i < hasta; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).show();
			}
			for(var i = hasta; i <= p.paginas; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).hide();
			}
		} else {
			var desde = p.paginas - 3;
			for(var i = 1; i <= desde; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).hide();
			}
			for(var i = desde + 1; i <= p.paginas; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).show();
			}
		}
	}

	function Crear_Evento(elemento, evento, funcion) {
		if(elemento.addEventListener) {
			elemento.addEventListener(evento, funcion, false);
		} else {
			elemento.attachEvent("on" + evento, funcion);
		}
	}

}